package com.superafroman.utils.scanner.criteria;

/**
 * Interface for criteria used on packages in class path scanning.
 */
public interface IPackageCriteria {

    static enum Match {
        NONE, PARTIAL, COMPLETE
    };

    /**
     * Decide whether the given package matches some set of criteria.
     *
     * @param packageName
     *         The package name to test
     * @return
     *         One of Match.COMPLETE, Match.PARTIAL, Match.NONE. Match.PARTIAL
     *         means that this package is a parent package of the one we are
     *         looking for so we should keep going along the branch.
     */
    Match fitsCriteria(String packageName);
}
